/*****************************************************************************************
**  Author:jxx 2022
**  QQ:283591387
**完整文档见：http://v2.volcore.xyz/document/api 【代码生成页面ViewGrid】
**常用示例见：http://v2.volcore.xyz/document/vueDev
**后台操作见：http://v2.volcore.xyz/document/netCoreDev
*****************************************************************************************/
//此js文件是用来自定义扩展业务代码，可以扩展一些自定义页面或者重新配置生成的代码

import { options } from "less";
import header from './MechanicaModelHeader.vue';
import Body from './MechanicaBody.vue';
import Footer from './MechanicaFooter.vue';
import Footer2 from './records_Footer.vue';
import { column } from "element-plus/es/components/table-v2/src/common.mjs";
import { ro } from "element-plus/es/locales.mjs";


let extension = {
  components: {
    //查询界面扩展组件
    gridHeader: '',
    gridBody: Body,
    gridFooter: Footer ,
    //新建、编辑弹出框扩展组件
    modelHeader: header,
    modelBody: '',
    modelRight: '',
    modelFooter: ''
  },
  tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
  buttons: { view: [], box: [], detail: [] }, //扩展的按钮
  methods: {

   

    print() {
      let rows = this.getSelectRows();
      if (rows.length == 0) {
        return this.$Message.error("请选中要打印的数据")
      }
      this.http.get('api/Mechanica/print',{},true).then((result)=>{

        let html = '';
      rows.forEach((row) => {
        let data = this.columns.find((x) => {
          return x.field == 'sbbm';
        }).bind.data;
        let sbbm = row.sbbm;
        let obj = data.find((x) => {
          return x.key == row.sbbm;
        });
        if(obj){
          sbbm=obj.value;
        }
        let sbmc = (row.sbmc || '').substr(0, 10);
        html += `<div>
        <div style="display:flex;">
        <div style="flex:1;">设备名称：${row.sbmc}</div>
        <div style="flex:1;">设备编码：${row.sbbm}</div>
        <div style="flex:1;">设备型号：${row.sbxh}</div>
        </div>
        </div>`;
      });
      html+=result;
      this.printHtml(html);
      
      });
      
    },

    // printHtml(html) {
    //   const iframe = document.createElement('iframe');
    //   iframe.style.display = 'none';
    //   document.body.appendChild(iframe);

    //   const doc = iframe.contentWindow.document;
    //   doc.open();
    //   doc.write(html);
    //   doc.close();

    //   iframe.contentWindow.onload = () => {
    //     setTimeout(() => {
    //       iframe.contentWindow.print();
    //       document.body.removeChild(iframe);
    //     }, 200);
    //   }
    // },
    printHtml(html) {
      var iframe = document.createElement('iframe');
      iframe.setAttribute('style', 'position:absolute;width:0;height:0;');
      document.body.appendChild(iframe);
      var Mech = iframe.contentWindow.document;
      Mech.write(html);
      Mech.close();
      iframe.contentWindow.print();
      document.body.removeChild(iframe);

    },
   
    //下面这些方法可以保留也可以删除
    onInit() {  //框架初始化配置前，
      if(this.$route.path==`/Mechanica_xin`){
        this.table.cnName="新设备";
        this.table.url="/Mechanica_xin/";
      };

      //示例：在按钮的最前面添加一个按钮
      this.buttons.unshift({  //也可以用push或者splice方法来修改buttons数组
        name: '按钮', //按钮名称
        icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon，vue3版本见element ui文档icon(注意不是element puls文档)
        type: 'primary', //按钮样式vue2版本见iview文档button，vue3版本见element ui文档button
        onClick: function () {
          this.$Message.success('点击了按钮');
        }
      });
      this.editFormOptions.forEach((options)=>{
        options.forEach((item)=>{
          if(item.field=='sbrkDate'){
            item.min='2025-05-01';
            item.max=Date.now();
          }
        })

      });

      this.editFormOptions.forEach((options) => {
        options.forEach((item) => {

          if (item.field == 'sbbm') {
            item.extra = {
              icon: 'el-icon-zoom-out',
              text: '选择数据',

              style: "color: #2f6b97;font-size:12px;,cursor: pointer",
              click: (item) => {
                this.$refs.modelHeader.open();
                //this.$Message.error("点击标签触发的事件");
              }

            }
          }
        })
      });
      //求合计
      this.columns.forEach((column) => {
        if (column.field == 'sl') {
          column.summary = true;
        }
      });

      //设置最大高度
      this.tableMaxHeight = 200;

      //加刷新按钮
      this.buttons.unshift({

        name: "刷 新",//按钮名称
        icon: 'md-refresh',//按钮图标，参照iview图标
        type: 'success',//按钮类型,可参照iview buttons设置此属性
        hidden: false,//是否隐藏按钮(如果想要隐藏按钮，在onInited方法中遍历buttons，设置hidden=true)
        onClick: function () { //触发事件
          this.search();
        }

      });
      this.buttons.splice(1, 0, {

        name: "自定义导出",//按钮名称
        icon: 'el-icon-document',//按钮图标，参照iview图标
        type: 'primary',//按钮类型,可参照iview buttons设置此属性
        hidden: false,//是否隐藏按钮(如果想要隐藏按钮，在onInited方法中遍历buttons，设置hidden=true)
        onClick: function () { //触发事件
          var params=this.getSearchParameters().wheres;
          let url='api/Mechanica/testExport';
          this.http.download(url,params,'测试.xlsx');
        }

      });
      this.buttons.splice(1, 0, {

        name: "自定义导出2",//按钮名称
        icon: 'el-icon-document',//按钮图标，参照iview图标
        type: 'primary',//按钮类型,可参照iview buttons设置此属性
        hidden: false,//是否隐藏按钮(如果想要隐藏按钮，在onInited方法中遍历buttons，设置hidden=true)
        onClick: function () { //触发事件
          var params=this.getSearchParameters().wheres;
          let url='api/Mechanica/test1Export';
          this.http.download(url,params,'测试.xlsx');
        }

      });
      this.buttons.splice(1, 0, {

        name: "按钮1",//按钮名称
        icon: 'md-refresh',//按钮图标，参照iview图标
        type: 'primary',//按钮类型,可参照iview buttons设置此属性
        hidden: false,//是否隐藏按钮(如果想要隐藏按钮，在onInited方法中遍历buttons，设置hidden=true)
        onClick: function () { //触发事件
          //新加一个弹出框
          this.$refs.gridBody.openModel1();
        }

      });
      this.buttons.splice(1, 0, {

        name: "按钮2",//按钮名称
        icon: 'md-refresh',//按钮图标，参照iview图标
        type: 'primary',//按钮类型,可参照iview buttons设置此属性
        hidden: false,//是否隐藏按钮(如果想要隐藏按钮，在onInited方法中遍历buttons，设置hidden=true)
        onClick: function () { //触发事件
          //新加一个弹出框
          this.$refs.gridBody.openModel2();
        }

      });



      //voltable每行颜色根据条件变色
      this.columns.forEach((column) => {
        if (column.field == 'sbxh') {
          column.formatter = (row) => {
            if (row.sbxh == '锻造设备') {
              return '<a style="color:red;">' + row.sbxh + '</a>'
            }
            return '<a style="color:blue;">' + row.sbxh + '</a>'
          }
          column.click = (row, column, event) => {
            this.$Message.info('点击了单元格')
          }

        }
      });

      //后面加上操作按钮
      this.columns.push({
        field: '操作',
        title: '操作',
        width: 120,
        align: "center",
        render: (h, { row, column, index }) => {
          return h("div", { style: {} }, [
            h("div", {}, [
              h(
                "span",
                {
                  class: [
                    "el-icon-edit el-tag el-tag--success el-tag--light",
                  ],
                  style: {
                    cursor: "pointer",
                    "margin-right": "8px",
                  },
                  onClick: (e) => {
                    this.edit(row)
                  },
                },
                "编辑"
              ),
              h(
                "span",
                {
                  class: [
                    "el-icon-delete el-tag el-tag--danger el-tag--light",
                  ],
                  style: {
                    cursor: "pointer",
                  },
                  onClick: (e) => {
                    this.del(row)
                  },
                },
                "删除"
              ),
            ]),
          ]);
        },

      },



      )

      //示例：设置修改新建、编辑弹出框字段标签的长度
      // this.boxOptions.labelWidth = 150;


    },
    rowClick({ row, column, event }) {

      this.$store.getters.data().id=row.id;
      //清除原来选中行
      this.$refs.table.$refs.table.clearSelection();
      
      //查询界面点击行事件
      this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
      this.$refs.gridFooter.rowClick(row);
      // this.$refs.gridFooter.$refs.rec1.rowClick(row);
      // this.$refs.gridFooter.$refs.rec2.rowClick(row);
      
      
      //this.$refs.gridFooter.$refs.footer2.$refs.rec1.rowClick(row);
      

      
    },


    onInited() {
      //this.heitht=550-200;


      this.single = true;//是否只能单选
      this.detailOptions.buttons.unshift({
        name: "选择图片",//按钮名称
        icon: 'el-icon-plus',//按钮图标，参照iview图标
        //type: 'success',//按钮类型,可参照iview buttons设置此属性
        hidden: false,//是否隐藏按钮(如果想要隐藏按钮，在onInited方法中遍历buttons，设置hidden=true)
        onClick: function () { //触发事件
          this.$refs.modelHeader.opnedetail();
        }
      });
      this.detailOptions.buttons.unshift({
        name: "批量选择图片",//按钮名称
        icon: 'el-icon-plus',//按钮图标，参照iview图标
        //type: 'success',//按钮类型,可参照iview buttons设置此属性
        hidden: false,//是否隐藏按钮(如果想要隐藏按钮，在onInited方法中遍历buttons，设置hidden=true)
        onClick: function () { //触发事件
          this.$refs.modelHeader.opnedetail2();
        }
      });


    },
    searchBefore(param) {
      //界面查询前,可以给param.wheres添加查询参数
      //返回false，则不会执行查询
      return true;
    },
    searchAfter(result) {
      // this.$nextTick(()=>{
      //   this.$refs.gridFooter.rowClick(rows[0]);
      //})
      return true;
    },
    addBefore(formData) {
      //新建保存前formData为对象，包括明细表，可以给给表单设置值，自己输出看formData的值
      return true;
    },
    updateBefore(formData) {
      //编辑保存前formData为对象，包括明细表、删除行的Id
      return true;
    },

    modelOpenAfter() {
      this.editFormOptions.forEach((options=>{
        options.forEach((item)=>{
          if(item.field=='sbxh'){
            // if(this.currentAction=='Add'){
            //   item.readonly=false;
            // }else{
            //   item.readonly=true;
            // }
            item.readonly=this.currentAction!='Add'//如果是新增就不是只读

          }

          if(this.currentAction=='Add'){
            if(item.field=='sbrkDate'){
              this.editFormFields.sbrkDate='2025-05-01 00:00:00';
            }
            if(item.field=='sbxh'){
              let obj=item.data.find((x)=>{
                return x.key=='锻造设备';
              });
              if(obj){
                this.editFormFields.sbxh=obj.key;
              }

            }
          }
          
        })
       
      }));
  }}
};
export default extension;
